export {};

// 2 箭头函数
// const echo = <Type>(value: Type[]): Type[] => {
//   console.log(value.length);
//   return value;
// };

// // 泛型收缩，到数组类型
// console.log(echo<number>([1, 2, 3]));

// 自定义类型
interface ILength {
  length: number;
}

// 泛型类型收缩，自定义类型
const echo = <Type extends ILength>(value: Type): Type => {
  // Type 收缩为，“至少含有一个 length 属性”
  console.log(value.length);
  return value;
};

// 调用举例
console.log(echo('123')); // OK
console.log(echo([1, 2, 3, 4])); // OK
console.log(echo({ length: 10 })); // OK
echo({ length: 1, bingo: '兵哥' });
// echo(123) // NG
